#pragma once

#include "head.h"

enum class CardID
{
	愚人,
	魔术师,
	女祭司,
	女皇,
	国王,
	教皇,
	恋人,
	战车,
	力量,
	隐士,
	命运之轮,
	正义,
	倒吊人,
	死亡,
	节制,
	魔鬼,
	高塔,
	星星,
	月亮,
	太阳,
	审判,
	世界
};

class Kit
{
	friend class KitManager;
public:
	gcSprite GetSprite(CardID id) const
	{
		return g_factory->CreateSprite(fmt::format("{}.{}", _path, (int)id));
	}
	std::string GetName() const { return _name; }
private:
	int _id;
	std::string _name;
	std::string _path;
};

class KitManager
{
public:
	KitManager()
	{
		// 加载所有牌组
		std::vector<std::string> vec_str;
		File::GetPathContent(g_factory->GetPathImage(), vec_str, "", true, false);
		for (auto& iter : vec_str)
		{
			std::string str_config = iter + "config.json";
			if(!File::IsExist(str_config))
				continue;
			Kit kit;
			kit._path = File::GetFolderName(iter);
			json j = Json::Parse(str_config);
			if(j.is_null())
				continue;
			Json::Get(j, "name", kit._name);
			Json::Get(j, "id", kit._id);
			_vecKit.push_back(kit);
		}
	}
	const std::vector<Kit>& GetKitAll() { return _vecKit; }
private:
	std::vector<Kit> _vecKit;
};

extern KitManager* g_kit;